!function(e, n) {
  "function" == typeof define && (define.amd || define.cmd) ? define(function() {
      return n(e)
  }) : n(e, !0)
}(window, function(e, n) {
  function i(n, i, t) {
      e.WeixinJSBridge ? WeixinJSBridge.invoke(n, o(i), function(e) {
          c(n, e, t)
      }) : u(n, t)
  }
  function t(n, i, t) {
      e.WeixinJSBridge ? WeixinJSBridge.on(n, function(e) {
          t && t.trigger && t.trigger(e),
          c(n, e, i)
      }) : t ? u(n, t) : u(n, i)
  }
  function o(e) {
      return e = e || {},
      e.appId = C.appId,
      e.verifyAppId = C.appId,
      e.verifySignType = "sha1",
      e.verifyTimestamp = C.timestamp + "",
      e.verifyNonceStr = C.nonceStr,
      e.verifySignature = C.signature,
      e
  }
  function r(e) {
      return {
          timeStamp: e.timestamp + "",
          nonceStr: e.nonceStr,
          package: e.package,
          paySign: e.paySign,
          signType: e.signType || "SHA1"
      }
  }
  function a(e) {
      return e.postalCode = e.addressPostalCode,
      delete e.addressPostalCode,
      e.provinceName = e.proviceFirstStageName,
      delete e.proviceFirstStageName,
      e.cityName = e.addressCitySecondStageName,
      delete e.addressCitySecondStageName,
      e.countryName = e.addressCountiesThirdStageName,
      delete e.addressCountiesThirdStageName,
      e.detailInfo = e.addressDetailInfo,
      delete e.addressDetailInfo,
      e
  }
  function c(e, n, i) {
      "openEnterpriseChat" == e && (n.errCode = n.err_code),
      delete n.err_code,
      delete n.err_desc,
      delete n.err_detail;
      var t = n.errMsg;
      t || (t = n.err_msg,
      delete n.err_msg,
      t = s(e, t),
      n.errMsg = t),
      (i = i || {})._complete && (i._complete(n),
      delete i._complete),
      t = n.errMsg || "",
      C.debug && !i.isInnerInvoke && alert(JSON.stringify(n));
      var o = t.indexOf(":");
      switch (t.substring(o + 1)) {
      case "ok":
          i.success && i.success(n);
          break;
      case "cancel":
          i.cancel && i.cancel(n);
          break;
      default:
          i.fail && i.fail(n)
      }
      i.complete && i.complete(n)
  }
  function s(e, n) {
      var i = e
        , t = v[i];
      t && (i = t);
      var o = "ok";
      if (n) {
          var r = n.indexOf(":");
          "confirm" == (o = n.substring(r + 1)) && (o = "ok"),
          "failed" == o && (o = "fail"),
          -1 != o.indexOf("failed_") && (o = o.substring(7)),
          -1 != o.indexOf("fail_") && (o = o.substring(5)),
          "access denied" != (o = (o = o.replace(/_/g, " ")).toLowerCase()) && "no permission to execute" != o || (o = "permission denied"),
          "config" == i && "function not exist" == o && (o = "ok"),
          "" == o && (o = "fail")
      }
      return n = i + ":" + o
  }
  function d(e) {
      if (e) {
          for (var n = 0, i = e.length; n < i; ++n) {
              var t = e[n]
                , o = h[t];
              o && (e[n] = o)
          }
          return e
      }
  }
  function u(e, n) {
      if (!(!C.debug || n && n.isInnerInvoke)) {
          var i = v[e];
          i && (e = i),
          n && n._complete && delete n._complete,
          console.log('"' + e + '",', n || "")
      }
  }
  function l(e) {
      if (!(k || w || C.debug || x < "6.0.2" || V.systemType < 0)) {
          var n = new Image;
          V.appId = C.appId,
          V.initTime = A.initEndTime - A.initStartTime,
          V.preVerifyTime = A.preVerifyEndTime - A.preVerifyStartTime,
          N.getNetworkType({
              isInnerInvoke: !0,
              success: function(e) {
                  V.networkType = e.networkType;
                  var i = "https://open.weixin.qq.com/sdk/report?v=" + V.version + "&o=" + V.isPreVerifyOk + "&s=" + V.systemType + "&c=" + V.clientVersion + "&a=" + V.appId + "&n=" + V.networkType + "&i=" + V.initTime + "&p=" + V.preVerifyTime + "&u=" + V.url;
                  n.src = i
              }
          })
      }
  }
  function p() {
      return (new Date).getTime()
  }
  function f(n) {
      T && (e.WeixinJSBridge ? n() : S.addEventListener && S.addEventListener("WeixinJSBridgeReady", n, !1))
  }
  function m() {
      N.invoke || (N.invoke = function(n, i, t) {
          e.WeixinJSBridge && WeixinJSBridge.invoke(n, o(i), t)
      }
      ,
      N.on = function(n, i) {
          e.WeixinJSBridge && WeixinJSBridge.on(n, i)
      }
      )
  }
  function g(e) {
      if ("string" == typeof e && e.length > 0) {
          var n = e.split("?")[0]
            , i = e.split("?")[1];
          return n += ".html",
          void 0 !== i ? n + "?" + i : n
      }
  }
  if (!e.jWeixin) {
      var h = {
          config: "preVerifyJSAPI",
          onMenuShareTimeline: "menu:share:timeline",
          onMenuShareAppMessage: "menu:share:appmessage",
          onMenuShareQQ: "menu:share:qq",
          onMenuShareWeibo: "menu:share:weiboApp",
          onMenuShareQZone: "menu:share:QZone",
          previewImage: "imagePreview",
          getLocation: "geoLocation",
          openProductSpecificView: "openProductViewWithPid",
          addCard: "batchAddCard",
          openCard: "batchViewCard",
          chooseWXPay: "getBrandWCPayRequest",
          openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
          startSearchBeacons: "startMonitoringBeacons",
          stopSearchBeacons: "stopMonitoringBeacons",
          onSearchBeacons: "onBeaconsInRange",
          consumeAndShareCard: "consumedShareCard",
          openAddress: "editAddress"
      }
        , v = function() {
          var e = {};
          for (var n in h)
              e[h[n]] = n;
          return e
      }()
        , S = e.document
        , I = S.title
        , y = navigator.userAgent.toLowerCase()
        , _ = navigator.platform.toLowerCase()
        , k = !(!_.match("mac") && !_.match("win"))
        , w = -1 != y.indexOf("wxdebugger")
        , T = -1 != y.indexOf("micromessenger")
        , M = -1 != y.indexOf("android")
        , P = -1 != y.indexOf("iphone") || -1 != y.indexOf("ipad")
        , x = function() {
          var e = y.match(/micromessenger\/(\d+\.\d+\.\d+)/) || y.match(/micromessenger\/(\d+\.\d+)/);
          return e ? e[1] : ""
      }()
        , A = {
          initStartTime: p(),
          initEndTime: 0,
          preVerifyStartTime: 0,
          preVerifyEndTime: 0
      }
        , V = {
          version: 1,
          appId: "",
          initTime: 0,
          preVerifyTime: 0,
          networkType: "",
          isPreVerifyOk: 1,
          systemType: P ? 1 : M ? 2 : -1,
          clientVersion: x,
          url: encodeURIComponent(location.href)
      }
        , C = {}
        , L = {
          _completes: []
      }
        , B = {
          state: 0,
          data: {}
      };
      f(function() {
          A.initEndTime = p()
      });
      var O = !1
        , E = []
        , N = {
          config: function(e) {
              C = e,
              u("config", e);
              var n = !1 !== C.check;
              f(function() {
                  if (n)
                      i(h.config, {
                          verifyJsApiList: d(C.jsApiList)
                      }, function() {
                          L._complete = function(e) {
                              A.preVerifyEndTime = p(),
                              B.state = 1,
                              B.data = e
                          }
                          ,
                          L.success = function(e) {
                              V.isPreVerifyOk = 0
                          }
                          ,
                          L.fail = function(e) {
                              L._fail ? L._fail(e) : B.state = -1
                          }
                          ;
                          var e = L._completes;
                          return e.push(function() {
                              l()
                          }),
                          L.complete = function(n) {
                              for (var i = 0, t = e.length; i < t; ++i)
                                  e[i]();
                              L._completes = []
                          }
                          ,
                          L
                      }()),
                      A.preVerifyStartTime = p();
                  else {
                      B.state = 1;
                      for (var e = L._completes, t = 0, o = e.length; t < o; ++t)
                          e[t]();
                      L._completes = []
                  }
              }),
              m()
          },
          ready: function(e) {
              0 != B.state ? e() : (L._completes.push(e),
              !T && C.debug && e())
          },
          error: function(e) {
              x < "6.0.2" || (-1 == B.state ? e(B.data) : L._fail = e)
          },
          checkJsApi: function(e) {
              var n = function(e) {
                  var n = e.checkResult;
                  for (var i in n) {
                      var t = v[i];
                      t && (n[t] = n[i],
                      delete n[i])
                  }
                  return e
              };
              i("checkJsApi", {
                  jsApiList: d(e.jsApiList)
              }, (e._complete = function(e) {
                  if (M) {
                      var i = e.checkResult;
                      i && (e.checkResult = JSON.parse(i))
                  }
                  e = n(e)
              }
              ,
              e))
          },
          onMenuShareTimeline: function(e) {
              t(h.onMenuShareTimeline, {
                  complete: function() {
                      i("shareTimeline", {
                          title: e.title || I,
                          desc: e.title || I,
                          img_url: e.imgUrl || "",
                          link: e.link || location.href,
                          type: e.type || "link",
                          data_url: e.dataUrl || ""
                      }, e)
                  }
              }, e)
          },
          onMenuShareAppMessage: function(e) {
              t(h.onMenuShareAppMessage, {
                  complete: function(n) {
                      "favorite" === n.scene ? i("sendAppMessage", {
                          title: e.title || I,
                          desc: e.desc || "",
                          link: e.link || location.href,
                          img_url: e.imgUrl || "",
                          type: e.type || "link",
                          data_url: e.dataUrl || ""
                      }) : i("sendAppMessage", {
                          title: e.title || I,
                          desc: e.desc || "",
                          link: e.link || location.href,
                          img_url: e.imgUrl || "",
                          type: e.type || "link",
                          data_url: e.dataUrl || ""
                      }, e)
                  }
              }, e)
          },
          onMenuShareQQ: function(e) {
              t(h.onMenuShareQQ, {
                  complete: function() {
                      i("shareQQ", {
                          title: e.title || I,
                          desc: e.desc || "",
                          img_url: e.imgUrl || "",
                          link: e.link || location.href
                      }, e)
                  }
              }, e)
          },
          onMenuShareWeibo: function(e) {
              t(h.onMenuShareWeibo, {
                  complete: function() {
                      i("shareWeiboApp", {
                          title: e.title || I,
                          desc: e.desc || "",
                          img_url: e.imgUrl || "",
                          link: e.link || location.href
                      }, e)
                  }
              }, e)
          },
          onMenuShareQZone: function(e) {
              t(h.onMenuShareQZone, {
                  complete: function() {
                      i("shareQZone", {
                          title: e.title || I,
                          desc: e.desc || "",
                          img_url: e.imgUrl || "",
                          link: e.link || location.href
                      }, e)
                  }
              }, e)
          },
          updateTimelineShareData: function(e) {
              i("updateTimelineShareData", {
                  title: e.title,
                  link: e.link,
                  imgUrl: e.imgUrl
              }, e)
          },
          updateAppMessageShareData: function(e) {
              i("updateAppMessageShareData", {
                  title: e.title,
                  desc: e.desc,
                  link: e.link,
                  imgUrl: e.imgUrl
              }, e)
          },
          startRecord: function(e) {
              i("startRecord", {}, e)
          },
          stopRecord: function(e) {
              i("stopRecord", {}, e)
          },
          onVoiceRecordEnd: function(e) {
              t("onVoiceRecordEnd", e)
          },
          playVoice: function(e) {
              i("playVoice", {
                  localId: e.localId
              }, e)
          },
          pauseVoice: function(e) {
              i("pauseVoice", {
                  localId: e.localId
              }, e)
          },
          stopVoice: function(e) {
              i("stopVoice", {
                  localId: e.localId
              }, e)
          },
          onVoicePlayEnd: function(e) {
              t("onVoicePlayEnd", e)
          },
          uploadVoice: function(e) {
              i("uploadVoice", {
                  localId: e.localId,
                  isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
              }, e)
          },
          downloadVoice: function(e) {
              i("downloadVoice", {
                  serverId: e.serverId,
                  isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
              }, e)
          },
          translateVoice: function(e) {
              i("translateVoice", {
                  localId: e.localId,
                  isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
              }, e)
          },
          chooseImage: function(e) {
              i("chooseImage", {
                  scene: "1|2",
                  count: e.count || 9,
                  sizeType: e.sizeType || ["original", "compressed"],
                  sourceType: e.sourceType || ["album", "camera"]
              }, (e._complete = function(e) {
                  if (M) {
                      var n = e.localIds;
                      try {
                          n && (e.localIds = JSON.parse(n))
                      } catch (e) {}
                  }
              }
              ,
              e))
          },
          getLocation: function(e) {},
          previewImage: function(e) {
              i(h.previewImage, {
                  current: e.current,
                  urls: e.urls
              }, e)
          },
          uploadImage: function(e) {
              i("uploadImage", {
                  localId: e.localId,
                  isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
              }, e)
          },
          downloadImage: function(e) {
              i("downloadImage", {
                  serverId: e.serverId,
                  isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
              }, e)
          },
          getLocalImgData: function(e) {
              !1 === O ? (O = !0,
              i("getLocalImgData", {
                  localId: e.localId
              }, (e._complete = function(e) {
                  if (O = !1,
                  E.length > 0) {
                      var n = E.shift();
                      wx.getLocalImgData(n)
                  }
              }
              ,
              e))) : E.push(e)
          },
          getNetworkType: function(e) {
              var n = function(e) {
                  var n = e.errMsg;
                  e.errMsg = "getNetworkType:ok";
                  var i = e.subtype;
                  if (delete e.subtype,
                  i)
                      e.networkType = i;
                  else {
                      var t = n.indexOf(":")
                        , o = n.substring(t + 1);
                      switch (o) {
                      case "wifi":
                      case "edge":
                      case "wwan":
                          e.networkType = o;
                          break;
                      default:
                          e.errMsg = "getNetworkType:fail"
                      }
                  }
                  return e
              };
              i("getNetworkType", {}, (e._complete = function(e) {
                  e = n(e)
              }
              ,
              e))
          },
          openLocation: function(e) {
              i("openLocation", {
                  latitude: e.latitude,
                  longitude: e.longitude,
                  name: e.name || "",
                  address: e.address || "",
                  scale: e.scale || 28,
                  infoUrl: e.infoUrl || ""
              }, e)
          },
          getLocation: function(e) {
              e = e || {},
              i(h.getLocation, {
                  type: e.type || "wgs84"
              }, (e._complete = function(e) {
                  delete e.type
              }
              ,
              e))
          },
          hideOptionMenu: function(e) {
              i("hideOptionMenu", {}, e)
          },
          showOptionMenu: function(e) {
              i("showOptionMenu", {}, e)
          },
          closeWindow: function(e) {
              i("closeWindow", {}, e = e || {})
          },
          hideMenuItems: function(e) {
              i("hideMenuItems", {
                  menuList: e.menuList
              }, e)
          },
          showMenuItems: function(e) {
              i("showMenuItems", {
                  menuList: e.menuList
              }, e)
          },
          hideAllNonBaseMenuItem: function(e) {
              i("hideAllNonBaseMenuItem", {}, e)
          },
          showAllNonBaseMenuItem: function(e) {
              i("showAllNonBaseMenuItem", {}, e)
          },
          scanQRCode: function(e) {
              i("scanQRCode", {
                  needResult: (e = e || {}).needResult || 0,
                  scanType: e.scanType || ["qrCode", "barCode"]
              }, (e._complete = function(e) {
                  if (P) {
                      var n = e.resultStr;
                      if (n) {
                          var i = JSON.parse(n);
                          e.resultStr = i && i.scan_code && i.scan_code.scan_result
                      }
                  }
              }
              ,
              e))
          },
          openAddress: function(e) {
              i(h.openAddress, {}, (e._complete = function(e) {
                  e = a(e)
              }
              ,
              e))
          },
          openProductSpecificView: function(e) {
              i(h.openProductSpecificView, {
                  pid: e.productId,
                  view_type: e.viewType || 0,
                  ext_info: e.extInfo
              }, e)
          },
          addCard: function(e) {
              for (var n = e.cardList, t = [], o = 0, r = n.length; o < r; ++o) {
                  var a = n[o]
                    , c = {
                      card_id: a.cardId,
                      card_ext: a.cardExt
                  };
                  t.push(c)
              }
              i(h.addCard, {
                  card_list: t
              }, (e._complete = function(e) {
                  var n = e.card_list;
                  if (n) {
                      for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
                          var o = n[i];
                          o.cardId = o.card_id,
                          o.cardExt = o.card_ext,
                          o.isSuccess = !!o.is_succ,
                          delete o.card_id,
                          delete o.card_ext,
                          delete o.is_succ
                      }
                      e.cardList = n,
                      delete e.card_list
                  }
              }
              ,
              e))
          },
          chooseCard: function(e) {
              i("chooseCard", {
                  app_id: C.appId,
                  location_id: e.shopId || "",
                  sign_type: e.signType || "SHA1",
                  card_id: e.cardId || "",
                  card_type: e.cardType || "",
                  card_sign: e.cardSign,
                  time_stamp: e.timestamp + "",
                  nonce_str: e.nonceStr
              }, (e._complete = function(e) {
                  e.cardList = e.choose_card_info,
                  delete e.choose_card_info
              }
              ,
              e))
          },
          openCard: function(e) {
              for (var n = e.cardList, t = [], o = 0, r = n.length; o < r; ++o) {
                  var a = n[o]
                    , c = {
                      card_id: a.cardId,
                      code: a.code
                  };
                  t.push(c)
              }
              i(h.openCard, {
                  card_list: t
              }, e)
          },
          consumeAndShareCard: function(e) {
              i(h.consumeAndShareCard, {
                  consumedCardId: e.cardId,
                  consumedCode: e.code
              }, e)
          },
          chooseWXPay: function(e) {
              i(h.chooseWXPay, r(e), e)
          },
          openEnterpriseRedPacket: function(e) {
              i(h.openEnterpriseRedPacket, r(e), e)
          },
          startSearchBeacons: function(e) {
              i(h.startSearchBeacons, {
                  ticket: e.ticket
              }, e)
          },
          stopSearchBeacons: function(e) {
              i(h.stopSearchBeacons, {}, e)
          },
          onSearchBeacons: function(e) {
              t(h.onSearchBeacons, e)
          },
          openEnterpriseChat: function(e) {
              i("openEnterpriseChat", {
                  useridlist: e.userIds,
                  chatname: e.groupName
              }, e)
          },
          launchMiniProgram: function(e) {
              i("launchMiniProgram", {
                  targetAppId: e.targetAppId,
                  path: g(e.path),
                  envVersion: e.envVersion
              }, e)
          },
          miniProgram: {
              navigateBack: function(e) {
                  e = e || {},
                  f(function() {
                      i("invokeMiniProgramAPI", {
                          name: "navigateBack",
                          arg: {
                              delta: e.delta || 1
                          }
                      }, e)
                  })
              },
              navigateTo: function(e) {
                  f(function() {
                      i("invokeMiniProgramAPI", {
                          name: "navigateTo",
                          arg: {
                              url: e.url
                          }
                      }, e)
                  })
              },
              redirectTo: function(e) {
                  f(function() {
                      i("invokeMiniProgramAPI", {
                          name: "redirectTo",
                          arg: {
                              url: e.url
                          }
                      }, e)
                  })
              },
              switchTab: function(e) {
                  f(function() {
                      i("invokeMiniProgramAPI", {
                          name: "switchTab",
                          arg: {
                              url: e.url
                          }
                      }, e)
                  })
              },
              reLaunch: function(e) {
                  f(function() {
                      i("invokeMiniProgramAPI", {
                          name: "reLaunch",
                          arg: {
                              url: e.url
                          }
                      }, e)
                  })
              },
              postMessage: function(e) {
                  f(function() {
                      i("invokeMiniProgramAPI", {
                          name: "postMessage",
                          arg: e.data || {}
                      }, e)
                  })
              },
              getEnv: function(n) {
                  f(function() {
                      n({
                          miniprogram: "miniprogram" === e.__wxjs_environment
                      })
                  })
              }
          }
      }
        , b = 1
        , R = {};
      return S.addEventListener("error", function(e) {
          if (!M) {
              var n = e.target
                , i = n.tagName
                , t = n.src;
              if (("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) && -1 != t.indexOf("wxlocalresource://")) {
                  e.preventDefault(),
                  e.stopPropagation();
                  var o = n["wx-id"];
                  if (o || (o = b++,
                  n["wx-id"] = o),
                  R[o])
                      return;
                  R[o] = !0,
                  wx.ready(function() {
                      wx.getLocalImgData({
                          localId: t,
                          success: function(e) {
                              n.src = e.localData
                          }
                      })
                  })
              }
          }
      }, !0),
      S.addEventListener("load", function(e) {
          if (!M) {
              var n = e.target
                , i = n.tagName;
              n.src;
              if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) {
                  var t = n["wx-id"];
                  t && (R[t] = !1)
              }
          }
      }, !0),
      n && (e.wx = e.jWeixin = N),
      N
  }
});
